#ifndef ATTENDANCETIMEMANAGER_H
#define ATTENDANCETIMEMANAGER_H

#include <QObject>


#include <QVariantMap>
#include <QTime>
#include <QMap>


#include "inimanager.h"


// 每日考勤时间配置结构体
struct DailySettings {
    QTime startTime;    // 上班时间
    QTime endTime;      // 下班时间
    bool isEnabled;     // 是否启用该配置

    // 转换为QVariantMap格式（用于写入INI）
    QVariantMap toVariantMap() const {
        return {
            {"StartTime", startTime.toString("HH:mm")},
            {"EndTime", endTime.toString("HH:mm")},
            {"Enabled", isEnabled}
        };
    }

    // 从QVariantMap解析数据
    static DailySettings fromVariantMap(const QVariantMap &map) {
        return {
            QTime::fromString(map.value("StartTime").toString(), "HH:mm"),
            QTime::fromString(map.value("EndTime").toString(), "HH:mm"),
            map.value("Enabled").toBool()
        };
    }

    // 在DailySettings结构体中添加校验方法
    bool isValid() const {
        return startTime.isValid() &&
               endTime.isValid() &&
               startTime < endTime;
    }
};

class AttendanceTimeManager : public QObject
{
    Q_OBJECT
public:
    explicit AttendanceTimeManager(const QString configPath, QObject *parent = nullptr);

    // 保存所有配置到文件
    bool saveSettings();

    // 从文件加载配置
    bool loadSettings();

    // 设置某天的考勤时间
    void setDailySettings(const QString &weekday, const DailySettings &settings);

    // 获取某天的考勤配置
    DailySettings getDailySettings(const QString &weekday) const;

    // 获取所有配置（用于界面展示等）
    QMap<QString, DailySettings> getAllSettings() const;

    static QMap<QString, DailySettings> m_settings;  // 内存存储配置
    static const QMap<int, QString> m_weekdayMap;  // 星期名称映射表

signals:

private:

    iniManager m_iniManager;                  // INI管理对象
    void initDefaultSettings();                // 初始化默认配置
};

#endif // ATTENDANCETIMEMANAGER_H
